home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Hottest 6
/
Hottest 6 (1996)(PDSoft)[!].iso
/
software
/
fredfish
/
1099.lha
/
Programs
/
PeekQual
/
PeekQual.s
< prev
next >
Wrap
Text File
|
1994-08-27
|
2KB
|
119 lines
opt AMIGA
include exec/execbase.i
include devices/input_lib.i
include devices/inputevent.i
moveq #RETURN_FAIL,d7
move.l 4.w,a6
lea DOS.Name(pc),a1
move.l #37,d0
jsr _LVOOpenLibrary(a6)
move.l d0,d6
beq exit
jsr _LVOCreateMsgPort(a6)
move.l d0,d5
beq closedos
move.l d5,a0
move.l #IOSTD_SIZE,d0
jsr _LVOCreateIORequest(a6)
move.l d0,d4
beq delport
move.l d4,a1
lea Input.Name(pc),a0
moveq #0,d0
move.l d0,d1
jsr _LVOOpenDevice(a6)
tst.b d0
bne delio
moveq #RETURN_ERROR,d7
move.l d6,a6
move.l #Args.Template,d1
sub.l #8,sp
move.l sp,d2
moveq #0,d3
jsr _LVOReadArgs(a6)
move.l d0,d3
movea.l (sp)+,a4 ; ONQUAL
movea.l (sp)+,a5 ; OFFQUAL
beq.s closeinput
move.l d4,a1
move.l IO_DEVICE(a1),a6
jsr _LVOPeekQualifier(a6)
moveq #0,d7
moveq #0,d2
move.l a4,d1
beq.s onend
moveq #0,d1
onloop lea Qual.Table(pc),a0
move.b (a4)+,d1
beq.s onend
searchon
cmp.b (a0)+,d1
beq.s teston
cmp.b #-1,(a0)+
beq.s onloop
bra.s searchon
teston move.b (a0),d2
btst d2,d0
bne.s onloop ; bit=1 => qualifier on, ok
bra.s end
onend move.l a5,d1
beq.s offend
moveq #0,d1
offloop lea Qual.Table(pc),a0
move.b (a5)+,d1
beq.s offend
searchoff
cmp.b (a0)+,d1
beq.s testoff
cmp.b #-1,(a0)+
beq.s offloop
bra.s searchoff
testoff move.b (a0),d2
btst d2,d0
beq.s offloop ; bit=0 => qualifier off, ok
bra.s end
offend moveq #5,d7
end move.l d3,d1
move.l d6,a6
jsr _LVOFreeArgs(a6)
closeinput
move.l d4,a1
move.l 4.w,a6
jsr _LVOCloseDevice(a6)
delio move.l d4,a0
jsr _LVODeleteIORequest(a6)
delport move.l d5,a0
jsr _LVODeleteMsgPort(a6)
closedos
move.l d6,a1
jsr _LVOCloseLibrary(a6)
exit move.l d7,d0
rts
Qual.Table
dc.b 's',IEQUALIFIERB_LSHIFT
dc.b 'S',IEQUALIFIERB_RSHIFT
dc.b 'c',IEQUALIFIERB_CONTROL
dc.b 'C',IEQUALIFIERB_CAPSLOCK
dc.b 'a',IEQUALIFIERB_LALT
dc.b 'A',IEQUALIFIERB_RALT
dc.b 'g',IEQUALIFIERB_LCOMMAND
dc.b 'G',IEQUALIFIERB_RCOMMAND
dc.b 'b',IEQUALIFIERB_LEFTBUTTON
dc.b 'B',IEQUALIFIERB_RBUTTON
dc.b 'm',IEQUALIFIERB_MIDBUTTON
dc.b 0,-1
DOS.Name dc.b 'dos.library',0
Input.Name dc.b 'input.device',0
Args.Template dc.b 'ONQUAL,OFFQUAL',0